/****************************************************************************
**
** Copyright (C) 2010 Andriy Kovalchuk, Vyacheslav Levytskyy,
** Igor Samolyuk, Valentyn Yanchuk (aka "Hermitech Laboratory")
**
** All rights reserved.
** Contact: Hermitech Laboratory (info@mmlsoft.com)
**
** This file is a part of the Formulator MathML Editor project
** (http://www.mmlsoft.com).
**
** Commercial Usage
** Licensees holding valid Formulator Commercial licenses may use this 
** file in accordance with the Formulator Commercial License Agreement 
** provided with the Software or, alternatively, in accordance with the 
** terms contained in a written agreement between you and 
** Hermitech Laboratory.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
** If you have questions regarding the use of this file, please contact
** Hermitech Laboratory at info@mmlsoft.com.
**
****************************************************************************/

#include "operator.h"

int CDsrFunctionListID_islinear[ FUNCTION_STD_LAST ] =
{











	OP_IS_LINEAR_FEATURE__ignore, //  FUNCTION_STD_NONE = 0,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_setadd,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_setmul,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_in,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_not_in,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_set_in,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_set_in_inv,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_set_in_eq,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_set_in_eq_inv,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_set_not_in,
	OP_IS_LINEAR_FEATURE__ignore, //  OPERATOR_round_brackets,
	OP_IS_LINEAR_FEATURE__right_c, //  OPERATOR_square_brackets,
	OP_IS_LINEAR_FEATURE__right_c, //  OPERATOR_square_brackets_byaddr,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_curly_brackets,
	OP_IS_LINEAR_FEATURE__ignore, //  OPERATOR_op_add,
	OP_IS_LINEAR_FEATURE__ignore, //  OPERATOR_op_sub,
	OP_IS_LINEAR_FEATURE__one_c, //  OPERATOR_op_mul,
	OP_IS_LINEAR_FEATURE__right_c, //  OPERATOR_op_div,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_mod,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_pow,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_l,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_le,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_g,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_rel_ge,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_bool_and,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_bool_or,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_bool_not,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_compare_ne,
	OP_IS_LINEAR_FEATURE__ignore, // OPERATOR_op_assign,
	OP_IS_LINEAR_FEATURE__ignore, // OPERATOR_op_return,
	OP_IS_LINEAR_FEATURE__ignore, // OPERATOR_op_create_x,
	OP_IS_LINEAR_FEATURE__ignore, // OPERATOR_op_equation_e,
	OP_IS_LINEAR_FEATURE__ignore, // OPERATOR_op_equation_l,
	OP_IS_LINEAR_FEATURE__ignore, // OPERATOR_op_equation_le,
	OP_IS_LINEAR_FEATURE__ignore, // OPERATOR_op_equation_g,
	OP_IS_LINEAR_FEATURE__ignore, // OPERATOR_op_equation_ge,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_compare_e,
	OP_IS_LINEAR_FEATURE__no, //  OPERATOR_op_type_spec,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_INTEGER,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_BITS,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_RATIONAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_BITS,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_RATIONAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_2_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_2_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_REAL_2_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_POLYNOM_INTEGER,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_POLYNOM_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_POLYNOM_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_RATIONAL_FUN_INTEGER,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_RATIONAL_FUN_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_RATIONAL_FUN_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_POLYNOM_INTEGER,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_POLYNOM_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_POLYNOM_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_RATIONAL_FUN_INTEGER,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_RATIONAL_FUN_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_RATIONAL_FUN_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_2_POLYNOM_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_2_POLYNOM_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_2_RATIONAL_FUN_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_2_RATIONAL_FUN_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_REAL_2_POLYNOM_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_REAL_2_POLYNOM_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_REAL_2_RATIONAL_FUN_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_REAL_2_RATIONAL_FUN_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_COMPLEX_2_POLYNOM_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_COMPLEX_2_RATIONAL_FUN_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_POLYNOM_INTEGER_2_POLYNOM_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_POLYNOM_INTEGER_2_POLYNOM_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_POLYNOM_REAL_2_POLYNOM_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_POLYNOM_INTEGER_2_RATIONAL_FUN_INTEGER,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_POLYNOM_INTEGER_2_RATIONAL_FUN_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_POLYNOM_INTEGER_2_RATIONAL_FUN_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_POLYNOM_REAL_2_RATIONAL_FUN_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_POLYNOM_REAL_2_RATIONAL_FUN_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_POLYNOM_COMPLEX_2_RATIONAL_FUN_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_FUN_INTEGER_2_RATIONAL_FUN_REAL,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_FUN_INTEGER_2_RATIONAL_FUN_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_FUN_REAL_2_RATIONAL_FUN_COMPLEX,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_INTEGER_VECTOR,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_RATIONAL_VECTOR,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_REAL_VECTOR,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_NATURAL_2_COMPLEX_VECTOR,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_RATIONAL_VECTOR,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_REAL_VECTOR,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_INTEGER_2_COMPLEX_VECTOR,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_2_REAL_VECTOR,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_RATIONAL_2_COMPLEX_VECTOR,
	OP_IS_LINEAR_FEATURE__ignore, // 	OPERATOR_op_convert_REAL_2_COMPLEX_VECTOR,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_abs,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_arch,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_arccos,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_arccosec,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_arcsec,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_arcsin,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_arctg,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_arcth,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_arsh,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_ch,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_cos,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_cosec,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_cosech,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_ctg,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_cth,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_sec,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_sech,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_sin,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_sh,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_sqrt,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_tg,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_th,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_exp,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_int,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_lg,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_ln,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_log,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_pow,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_root,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_atan2,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_fmod,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_polar,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_ceil,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_floor,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_imag,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_pow10,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_real,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_random,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_identity,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_primes,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_isprime,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_gcd,
	OP_IS_LINEAR_FEATURE__no, //  FUNCTION_std_lcm,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_polyroots,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_polyder,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_polyint,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_polygcd,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_polylcm,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_lsolve,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_ratfpart,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_ratfder,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_det,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_inverse,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_eigenvals,
	OP_IS_LINEAR_FEATURE__no, //  	FUNCTION_std_eigenvec,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_box_lt,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_box_rt,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_box_lb,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_box_rb,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_box,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_abs,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_norm,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_floor,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_ceil,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_empty_frame,
	OP_IS_LINEAR_FEATURE__right_c, //  FORMULA_fraction,
	OP_IS_LINEAR_FEATURE__right_c, //  FORMULA_diagonal_fraction,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_sqrt,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_root,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_plusminus,
	OP_IS_LINEAR_FEATURE__one_c, //  FORMULA_times,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_circle_plus,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_circle_times,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_minus,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_center_dot,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_bullet,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_lang,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_rang,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_identical,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_almost_equal,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_proportional,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_therefore,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_exist,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_forall,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_in,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_not_in,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_sadd,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_smul,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_set_in,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_set_in_inv,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_set_in_eq,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_set_in_eq_inv,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_set_not_in,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_set_empty,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_sup,
	OP_IS_LINEAR_FEATURE__right_c, //  FORMULA_sub,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_subsup,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_over,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_under,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_underover,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_table,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_transpose,
	OP_IS_LINEAR_FEATURE__no, //  FORMULA_prime,
	OP_IS_LINEAR_FEATURE__ignore, //  CONST_polynom_x_integer,
	OP_IS_LINEAR_FEATURE__ignore, //  CONST_polynom_x_real,
	OP_IS_LINEAR_FEATURE__ignore, //  CONST_polynom_x_complex,
	OP_IS_LINEAR_FEATURE__ignore, //  CONST_true,
	OP_IS_LINEAR_FEATURE__ignore, //  CONST_false,
	OP_IS_LINEAR_FEATURE__ignore, //  CONST_TIME,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_exponentiale,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_eulergamma,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_imaginaryi,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_pi,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_p_g,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_integers,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_reals,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_rationals,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_naturalnumbers,
	OP_IS_LINEAR_FEATURE__ignore, //  FORMULA_complexes,
	OP_IS_LINEAR_FEATURE__ignore, //  	OPERATOR_VAR_ask,
	OP_IS_LINEAR_FEATURE__ignore, //  	VARIABLE_USER,
	OP_IS_LINEAR_FEATURE__ignore, //  	LOCAL_VARIABLE_USER,
	OP_IS_LINEAR_FEATURE__ignore, //  	VARIABLE_USER_INDIRECT,
	OP_IS_LINEAR_FEATURE__ignore, //  	LOCAL_VARIABLE_USER_INDIRECT,
	OP_IS_LINEAR_FEATURE__ignore, //  	FUNCTION_USER,
	OP_IS_LINEAR_FEATURE__ignore, //  	FUNCTION_USER_POLYNOMIAL,
	OP_IS_LINEAR_FEATURE__ignore  //  	FUNCTION_USER_RATIONAL_FUN,
};

int ml_getOpLinearFeature( long id )
{
	if( id >= 0 && id < FUNCTION_STD_LAST )
		return CDsrFunctionListID_islinear[ id ];
	return OP_IS_LINEAR_FEATURE__no;
}
